﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using SIPDTO;

namespace SIP
{
    public partial class Clerigo : System.Web.UI.Page
    {

        #region ** Declaración de variables

        SIPBLL.SIPBLL _bll = new SIPBLL.SIPBLL();
        dtoClerigo _dtoclerigo = new dtoClerigo();
        List<dtoDiocesis> _dtdiocesis = new List<dtoDiocesis>();
        List<dtoCargo> _dtcargo = new List<dtoCargo>();
        List<dtoTiposIdentificacion> _dttiposid = new List<dtoTiposIdentificacion>();
        List<dtoParroquia> _dtparroquia = new List<dtoParroquia>();
        List<dtoClerigo> _dtclerigo = new List<dtoClerigo>();
        List<dtoParametros> _dtparametro = new List<dtoParametros>();
        dtoParroquia _dtoparroquia = new dtoParroquia();
        dtoDiocesis _dtodiocesis = new dtoDiocesis();
        dtoPersonas _dtopersona = new dtoPersonas();
        dtoError _resp = new dtoError();
        List<dtoPersonas> _dtpersona = new List<dtoPersonas>();

        #endregion

        protected void Page_Load(object sender, EventArgs e)
        {

            if (!IsPostBack)
            {
                ObtenerTiposId();
                ObtenerCargo();
                ObtenerDiocesis();
                ddlParroquia.Items.Insert(0, new ListItem("Seleccionar Parroquia", "0"));
                if (Convert.ToBoolean(Session["Crear"]) == true)
                {
                    CleanControl(this.Controls);
                    ActivarBotones();
                    if (Convert.ToInt16((ddlTipoIdentificacion).SelectedValue) == 0)
                    {
                        DesactivarTodosBotones();
                    }
                }
                else
                {
                    BuscarClerigo();
                }
            }
            else { if (Convert.ToBoolean(Session["Crear"]) == false) { mskCedula.Enabled = false; } }

        }

        protected void ddlDiocesis_SelectedIndexChanged(object sender, EventArgs e)
        {
            ObtenerParroquia();
        }
        protected void ddlTipoIdentificacion_SelectedIndexChanged(object sender, EventArgs e)
        {
            //se asigna el tamano a aceptar para el campo identificación
           
            if (ddlTipoIdentificacion.SelectedItem.Text == "Cédula") {
                Cedula.Mask = "999999999";
                mskCedula.Text = "";
                ActivarBotones();
                mskCedula.Focus();
            }
            if (ddlTipoIdentificacion.SelectedItem.Text == "Pasaporte")
            {
                Cedula.Mask = "999999999999";
                mskCedula.Text = "";
                ActivarBotones();
                mskCedula.Focus();
            }
            if ((ddlTipoIdentificacion.SelectedItem.Text == "Cédula Residencia Permanente") || (ddlTipoIdentificacion.SelectedItem.Text == "Cédula Residencia Temporal"))
            {
                Cedula.Mask = "9999999999999999";
                mskCedula.Text = "";
                ActivarBotones();
                mskCedula.Focus();
            }
        }

        protected void Buscar(object sender, EventArgs e)
        {
            _dtopersona.TipoIdentificacion = Convert.ToInt16(ddlTipoIdentificacion.SelectedValue);
            _dtopersona.Identificacion = mskCedula.Text;
            _dtpersona = _bll.ObtenerPersona(_dtopersona);// se consulta por medio de la identificación el clérigo
            txtNombre.Text = _dtpersona[0].Nombre + " " + _dtpersona[0].Apellido1 + " " + _dtpersona[0].Apellido2;

        }
        protected void Registrar(object sender, EventArgs e)
        {
            try
            {
                if (Page.IsValid == true)
                {
                    if ((Convert.ToInt16((ddlDiocesis).SelectedValue) != 0) || (Convert.ToInt16((ddlParroquia).SelectedValue) != 0) || (Convert.ToInt16((ddlCargo).SelectedValue) != 0))
                    {
                         if (Convert.ToBoolean(Session["Crear"]) == true)
                            {
                                _dtoclerigo.TipoIdentificacion = Convert.ToInt16(ddlTipoIdentificacion.SelectedValue);
                                _dtoclerigo.Identificacion = mskCedula.Text;
                                _dtoclerigo.NombreCompleto = txtNombre.Text;
                                _dtoclerigo.Rango  = ddlCargo.SelectedValue;
                                _dtoclerigo.IdParroquia = Convert.ToInt16(ddlParroquia.SelectedValue);
                                _dtoclerigo.IdDiocesis = Convert.ToInt16(ddlDiocesis.SelectedValue);
                                    if (chkactivo.Checked == true)
                                    {
                                        _dtoclerigo.Estado = true;
                                    }
                                    else
                                    {
                                        _dtoclerigo.Estado = false;
                                    }
                                // se crea el sacerdote en la tabla Clerigos
                                _resp = _bll.RegistrarClerigo(_dtoclerigo,1);
                                    if (_resp.IdError == 100)
                                    {
                                        WebMsgBox.Show(_resp.Mensaje);
                                        CleanControl(this.Controls);
                                        mskCedula.Text = "";
                                        DesactivarTodosBotones();
                                    }
                                    else
                                    {
                                        WebMsgBox.Show(_resp.Mensaje);
                                    }
                            }
                            else // actualiza la información de la parroquia
                            {
                                _dtoclerigo.TipoIdentificacion = Convert.ToInt16(ddlTipoIdentificacion.SelectedValue);
                                _dtoclerigo.Identificacion = mskCedula.Text;
                                _dtoclerigo.Rango = ddlCargo.SelectedValue;
                                _dtoclerigo.IdParroquia = Convert.ToInt16(ddlTipoIdentificacion.SelectedValue);
                                _dtoclerigo.IdDiocesis = Convert.ToInt16(ddlTipoIdentificacion.SelectedValue);
                                    if (chkactivo.Checked == true)
                                    {
                                        _dtoclerigo.Estado = true;
                                    }
                                    else
                                    {
                                        _dtoclerigo.Estado = false;
                                    }
                                // se modifica el sacerdote en la tabla Clerigos
                                _resp = _bll.RegistrarClerigo(_dtoclerigo,2);
                                    if (_resp.IdError == 100)
                                    {
                                        WebMsgBox.Show(_resp.Mensaje);
                                        Response.Redirect("ListadoClerigos.aspx");
                                    }
                                    else
                                    {
                                        WebMsgBox.Show(_resp.Mensaje);
                                    }
                             }
                    }
                     else 
                        { 
                            WebMsgBox.Show("Exiten campos pendientes de completar, por favor verifique Diócesis, Parroquia y Cargo"); 
                        }
                }
            }
            catch (Exception ex)
            {
                _resp.IdError = -100;
                _resp.Mensaje = ex.Message.ToString();
                WebMsgBox.Show(_resp.Mensaje);
            }

        }

        protected void Cancelar(object sender, EventArgs e)
        {
            Response.Redirect("ListadoClerigos.aspx"); // Retorna al listado de clerigos

        }

        private void BuscarClerigo() //Obtiene la información del clerigo y lo carga en pantalla
        {
            DesactivarBotones();
            _dtoclerigo.TipoIdentificacion = Convert.ToInt16(Session["TipoIdentificacion"]);
            _dtoclerigo.Identificacion = Convert.ToString(Session["Identificacion"]);
            _dtclerigo = _bll.ObtenerClerigo(_dtoclerigo);
            mskCedula.Text = _dtclerigo[0].Identificacion;
            InformaciónPersonal(_dtoclerigo);
            ddlTipoIdentificacion.SelectedValue = Convert.ToString(_dtclerigo[0].TipoIdentificacion);
            ddlDiocesis.SelectedValue = Convert.ToString(_dtclerigo[0].IdDiocesis);
            ddlParroquia.SelectedValue = Convert.ToString(_dtclerigo[0].IdParroquia);
            ObtenerParroquia();
            ddlCargo.SelectedValue = Convert.ToString(_dtclerigo[0].Rango);
            if (Convert.ToBoolean(_dtclerigo[0].Estado) == true)
            {
                chkactivo.Checked = true;
            }
            else
            {
                chkactivo.Checked = false;
            }
        }
       
        private void InformaciónPersonal(dtoClerigo info)
        {
            _dtopersona.TipoIdentificacion = info.TipoIdentificacion;
            _dtopersona.Identificacion = info.Identificacion;
            _dtpersona = _bll.ObtenerPersona(_dtopersona);// se consulta por medio de la identificación el clérigo
            txtNombre.Text = _dtpersona[0].Nombre + " " + _dtpersona[0].Apellido1 + " " + _dtpersona[0].Apellido2;
        }

        #region ** Llenado de combos

        public void ObtenerCargo()
        {
            _dtcargo = _bll.ObtenerCargo();
            ddlCargo.DataSource = _dtcargo;
            ddlCargo.DataValueField = "IdCargo";
            ddlCargo.DataTextField = "Descripcion";
            ddlCargo.DataBind();
            ddlCargo.Items.Insert(0, new ListItem("Seleccionar Cargo", "0"));
        }

        public void ObtenerTiposId()
        {
            _dttiposid = _bll.ObtenerTiposId();
            ddlTipoIdentificacion.DataSource = _dttiposid;
            ddlTipoIdentificacion.DataValueField = "Id";
            ddlTipoIdentificacion.DataTextField = "Descripcion";
            ddlTipoIdentificacion.DataBind();
            ddlTipoIdentificacion.Items.Insert(0, new ListItem("Seleccionar Tipo Identificacion", "0"));
        }

        public void ObtenerParroquia()
        {
            _dtoparroquia.IdDiocesis = Convert.ToInt16(ddlDiocesis.SelectedValue);
            _dtparroquia = _bll.ObtenerParroquiaxDiocesis(_dtoparroquia);
            ddlParroquia.Enabled = true;
            ddlParroquia.DataSource = _dtparroquia;
            ddlParroquia.DataValueField = "IdParroquia";
            ddlParroquia.DataTextField = "Descripcion";
            ddlParroquia.DataBind();
            ddlParroquia.Items.Insert(0, new ListItem("Seleccionar Parroquia", "0"));

        }

        public void ObtenerDiocesis()
        {
            _dtdiocesis = _bll.ObtenerDiocesis();
            ddlDiocesis.DataSource = _dtdiocesis;
            ddlDiocesis.DataValueField = "Identificacion";
            ddlDiocesis.DataTextField = "Descripcion";
            ddlDiocesis.DataBind();
            ddlDiocesis.Items.Insert(0, new ListItem("Seleccionar Diócesis", "0"));


        }

        #endregion

      #region ** Validaciones

        public void CleanControl(ControlCollection controles)
        {
            foreach (Control control in controles)
            {
                if (control is TextBox)
                    ((TextBox)control).Text = string.Empty;
                else if (control is DropDownList)
                    ((DropDownList)control).ClearSelection();
                else if (control is RadioButtonList)
                    ((RadioButtonList)control).ClearSelection();
                else if (control is CheckBoxList)
                    ((CheckBoxList)control).ClearSelection();
                else if (control is RadioButton)
                    ((RadioButton)control).Checked = false;
                else if (control is CheckBox)
                    ((CheckBox)control).Checked = false;
                else if (control.HasControls())   //Esta linea detécta un Control que contenga otros Controles                    
                    //Así ningún control se quedará sin ser limpiado.                   
                    CleanControl(control.Controls);
            }
        }

        public void DesactivarBotones()
        {
            ImageButton1.Enabled = false;
            txtNombre.Enabled = false;
            mskCedula.Enabled = false;
            ddlTipoIdentificacion.Enabled = false;
            ddlDiocesis.Enabled = true;
            ddlParroquia.Enabled = true;
            ddlCargo.Enabled = true;

        }

        public void ActivarBotones()
        {
            ImageButton1.Enabled = true;
            txtNombre.Enabled = false;
            mskCedula.Enabled = true;
            ddlTipoIdentificacion.Enabled = true;
            ddlDiocesis.Enabled = true;
            ddlParroquia.Enabled = true;
            ddlCargo.Enabled = true;

        }

        public void DesactivarTodosBotones()
        {
            ImageButton1.Enabled = false;
            txtNombre.Enabled = false;
            mskCedula.Enabled = false;
            ddlTipoIdentificacion.Enabled = true;
            ddlDiocesis.Enabled = false;
            ddlParroquia.Enabled = false;
            ddlCargo.Enabled = false;
        }

        #endregion




    }
}